package com.hwn.datax.service;


import com.hwn.datax.domain.DataxJob;
import com.hwn.datax.domain.DataxJobRunLog;
import com.hwn.datax.domain.ServerInfo;
import com.hwn.datax.utils.Result;
import javafx.collections.ObservableList;

import java.util.List;

/**
* @author Administrator
* @description 针对表【datax_job(datax任务)】的数据库操作Service
* @createDate 2023-06-04 17:00:35
*/
public interface DataxJobService  {


    ObservableList<DataxJobRunLog> getDataxJobRunLogList();

    /**
     * 上传job到datax服务器
     * @param id dataxJobId
     * @return 上传后的任务路径
     */
    DataxJob uploadJson(Long id);

    DataxJob uploadDataxJob(DataxJob dataxJob);

    /**
     * 获取分组下的所有任务
     * @param groupId 分组ID
     * @return 任务列表
     */
    List<DataxJob> listByGroupId(Long groupId);

    /**
     * 后台执行job任务
     * @param id job主键
     * @return 返回任务标识
     */
    Result<String> executeDataxJob(Long id);

    /**
     * 获取任务执行情况
     *
     * @param uuid 任务标识
     * @return
     */
    DataxJobRunLog getExecLogByKey(String uuid);



    void executeDataxJobByRange(Long id);

    /**
     * 结束任务
     * @param uuid 任务标识
     * @return
     */
    Boolean killDataxJob(String uuid);

    /**
     * 删除指定的任务日志
     * @param keys 任务标识项
     * @return
     */
    Long removeExecKeys(List<String> keys);

    String buildShellCommand(ServerInfo serverInfo, DataxJob dataxJob);

    /**
     * 保存任务
     * @param dataxJob
     * @return
     */
    DataxJob save(DataxJob dataxJob);

    void remove(Long jobId);
}
